1. Field of the Invention
The present invention relates to tools for maintenance of computer applications.
2. Description of the Related Art
Maintenance of computer applications (or software maintenance) is expensive and time-consuming. One of the reasons for this is that over time, applications are continuously modified and tend to lose any logical structure they had and become harder to understand and maintain. For instance, persistent data is the foundation on which all large legacy business applications are built. Over time, however, the physical representation of legacy data can become so fragmented and convoluted that it becomes the principal impediment to adding new business functionality, to integrating new systems, and to retiring old ones.
What is desirable in maintaining and modifying such systems is a model of the logical structure of legacy data, which we refer to as a logical data model, (as opposed to its physical realization (which we refer to as a physical data model), as well as information describing how this logical structure is actually realized in the applications (which we refer to as a linkage between the logical and physical data models).
For example, a particular application may make use of a logical concept “customer number”. It is often hard to identify all variables that store a “customer number” through a manual inspection. Legacy languages like Cobol do not have the concept of a “type” for variables. Variable names can often be misleading. The same variable can be used to store different information at different times. A “customer number” may even be stored in various different formats in different parts of an application.
The logical concept “customer number” is part of the logical data model. The set of variables used in an application are part of the physical data model. Links between the logical and physical data model can indicate which variables in an application are used as customer numbers.
A software maintenance tool that maintains such a logical data model, along with links to the physical data model, can make changes to the application easier. As an example, a user can ask the system to show all the lines of code in a program where a “customer number” is used. The system can use the links to identify all variables in the program that represent a “customer number” and then identify and report all lines of code where any of these variables are used. This allows users who may not be familiar with the implementation to ask questions using the business or domain vocabulary.
The logical data model and the links serve as a formal documentation of the system that is machine-readable and, hence, usable by various programming tools.
No such maintenance tool is available for legacy programming languages (such as Cobol) today.
Existing modeling tools, such as Rational Rose, allow developers to create logical data models and then generate physical models and code from these logical models. However, they do not help with the problem faced in the maintenance of legacy applications, applications that already exist but have no logical models.
Existing reverse engineering tools (such as those available with Rational Rose) tend to create a data model that is isomorphic to the physical realization in the application. Hence, these are more physical data models rather than logical data models.
Existing program-understanding tools for legacy languages (such as RescurWare from Relativity) help with various program understanding tasks, but do not create a logical data model that is linked to the physical data model (or application).